R Shiny

Lab
R
RShiny

Apa Itu R Shiny?

Shiny adalah framework dari bahasa pemrograman R yang digunakan untuk membuat aplikasi web interaktif. Dengan Shiny, pengguna R dapat:

  • Membuat dashboard interaktif tanpa perlu menguasai HTML, CSS, atau JavaScript.
  • Menyusun antarmuka pengguna (UI) dan logika pemrosesan (server) secara terpisah.
  • Mengubah analisis data menjadi aplikasi web interaktif.

Shiny dikembangkan oleh RStudio (sekarang Posit) dan sangat cocok untuk:

  • Visualisasi data
  • Simulasi statistik interaktif
  • Aplikasi prediksi (regresi, klasifikasi)
  • Dashboard monitoring

Struktur Dasar Aplikasi R Shiny

Sebelumnya mari kita pahami terlebih dahulu struktur dari aplikasi dengan R Shiny ini. Shiny terdiri dari 3 komponen, yaitu

  1. UI (User Interface): bagaimana tampilan aplikasi dan input/output disusun.
  2. Server: logika pemrosesan di balik tampilan, termasuk reaktivitas.
  3. ShinyApp: fungsi dari aplikasi yang memanggil UI dan Server untuk menjalankan aplikasi

ShinyApp merupakan fungsi dari aplikasi yang memanggil UI dan Server untuk menjalankan aplikasi.

An Excel window with data about countries

Memulai R Shiny

Pertama kita buka terlebih dahulu R Studio, kemudian klik File, New File, pilih Shiny Web App.

An Excel window with data about countries

kemudian akan muncul seperti berikut, sebelumnya buatlah folder di C:/cobashiny, untuk saat ini kita klik “Single File (app.R)” terlebih dahulu

An Excel window with data about countries

kemudian klik “Create” sehingga layar RStudio akan memberikan tampilan seperti berikut:

An Excel window with data about countries

jika dicermati berikut gambaran umumnya

An Excel window with data about countries

Jika kita klik “Run App” maka koding tersebut akan segera diproses dengan hasil seperti berikut

An Excel window with data about countries

klik “Save selected” dan terlihat sebuah file “app.R” (koding yang disimpan dalam file sebaiknya diberi nama “app.R”) telah terbentuk, kemudian nampak gambar seperti berikut

An Excel window with data about countries

maka nampaklah histogram yang interaktif, dari sini nampak bahwa tugas dari “UI” adalah tampilan depan aplikasi (website) sebagai user interface dan tugas dari “server” adalah dapur belakang pemrosesan dan pemodelan.

Jika kita ingin lanjutkan sampai di publish maka klik publish pada pojok kanan, akan muncul sebagai berikut

An Excel window with data about countries

Pada materi ini kita mencoba membuat aplikasi sederhana yang baru, sehingga kita kembali lagi pada jendela yang sebelumnya

An Excel window with data about countries

kemudian kita hilangkan semuanya sehingga nampak seperti berikut

An Excel window with data about countries

kemudian pada bagian ui dan server kita berikan koding seperti berikut

library(shiny)
ui <- fluidPage(titlePanel("Jumlahan dua bilangan bulat"),
               #membuat kolom input pengisian
               sidebarLayout(
                 sidebarPanel(
                   textInput("satu", "bilangan bulat pertama"),
                   textInput("dua", "bilangan bulat kedua"),
                   actionButton("add","Tambah")
                 ),
                 #tunjukkan hasilnya
                 mainPanel(
                   textOutput("sum")
                 )
     )
)
server <- function(input, output, session) {
                 #jika tanda Tambah diklik maka jalankan reaktif
                 observeEvent( input$add,{
                   x<-as.numeric(input$satu)
                   y<-as.numeric(input$dua)
                   #reactive expression
                   n<-x+y
                   output$sum<-renderPrint(n)
                 }
)
}
# Run the application 
shinyApp(ui = ui, server = server)

kemudian kita juga bisa dari menu “open in browser”, maka dari web browsing akan muncul seperti berikut

An Excel window with data about countries

Jika akan kita kembangkan lagi dengan menambahkan perhitungan rata-rata, maka dapat gunakan perintah seperti berikut:

library(shiny)
ui <- fluidPage(titlePanel("Jumlahan dua bilangan bulat"),
               #membuat kolom input pengisian
               sidebarLayout(
                 sidebarPanel(
                   textInput("satu", "bilangan bulat pertama"),
                   textInput("dua", "bilangan bulat kedua"),
                   actionButton("hitung","Hitung")
                 ),
                 #tunjukkan hasilnya
                 mainPanel(
                   tags$h5('jumlahnya adalah:'),
                   verbatimTextOutput("sum"),
                   
                   tags$h5("reratanya adalah:"),
                   verbatimTextOutput("mean")
                   
                 )
     )
)
server <- function(input, output, session) {
                 #jika tanda Tambah diklik maka jalankan reaktif
                 observeEvent( input$hitung,{
                   x<-as.numeric(input$satu)
                   y<-as.numeric(input$dua)
                   #reactive expression
                   n<-x+y
                   m<-n/2
                   output$sum<-renderPrint(n)
                   output$mean<-renderPrint(m)
                   
                 }
)
}
# Run the application 
shinyApp(ui = ui, server = server)